﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;

/// <summary>
/// Descripción breve de Menu
/// </summary>
public class Menu : Conexion
{
    private String menu;
    private String nombreUsuario;
    private Boolean facturacion = false;
    private Boolean clientes = false;
    private Boolean servicioTecnico = false;
    private Boolean stock = false;
    private Boolean administracion = false;
    private Boolean caja = false;

    public Menu() 
    { 
    }
    
    public Menu(String nombreUsuario)
    {
        this.nombreUsuario = nombreUsuario;
        ChequearPermisos();
        ArmarMenu();
    }

    public void ChequearPermisos() 
    {
        DataSet ds;
        AbrirConexion();
        SentenciaSQL = "select * from permisos_x_usuario pu, permiso p, usuario u where pu.id_permiso = p.id_permiso and pu.id_usuario = u.id_usuario and u.usuario = '"+nombreUsuario+"';";
        IniciarTransaccion();
        try
        {
            ds = EjecutarComandoDataSet();
            ConfirmarTransaccion();
        }
        catch (ConexionException ex)
        {
            throw new ConexionException("no se pudieron obtener los permisos para armar el menu", ex);
        }
        finally
        {
            CerrarConexion();
        }

       
            //seteamos los pemisos
            DataRow[] rows;
            rows = ds.Tables[0].Select("descripcion = 'facturacion'");
            facturacion = rows[0]["estado"].ToString() == "1" ? true : false;

            rows = ds.Tables[0].Select("descripcion = 'clientes'");
            clientes = rows[0]["estado"].ToString() == "1" ? true : false;

            rows = ds.Tables[0].Select("descripcion = 'servicio tecnico'");
            servicioTecnico = rows[0]["estado"].ToString() == "1" ? true : false;

            rows = ds.Tables[0].Select("descripcion = 'stock'");
            stock = rows[0]["estado"].ToString() == "1" ? true : false;

            rows = ds.Tables[0].Select("descripcion = 'caja'");
            caja = rows[0]["estado"].ToString() == "1" ? true : false;

            rows = ds.Tables[0].Select("descripcion = 'administracion'");
            administracion = rows[0]["estado"].ToString() == "1" ? true : false;
        
       
        
    }


   /**
    * Getters y Setters
    */
    public String GetMenu
    {
        get { return this.menu; }
    }
   
    public Boolean Facturacion
    {
        set
        {
            facturacion = value;
            ArmarMenu();
        }
        get { return this.facturacion; }
    }

    
    
    public Boolean Clientes
    {
         set
        {
            clientes = value;
            ArmarMenu();
        }
        get { return this.clientes; }
        
    }

    public Boolean ServicioTecnico
    {
        set
        {
            servicioTecnico = value;
            ArmarMenu();
        }
        get { return this.servicioTecnico; }
    }


    public Boolean Stock {
        set
        {
            stock = value;
            ArmarMenu();
        }
        get { return this.stock; }
    }

    public Boolean Administracion 
    {
        set
        {
            administracion = value;
            ArmarMenu();
        }
        get { return this.administracion; }
    }

    public Boolean Caja
    {
        set
        {
            caja = value;
            ArmarMenu();
        }
        get { return this.caja; }
    }

    /**
     * Arma el menu
     */
    private void ArmarMenu()
    {
        menu = "<ul id=\"menu\">"
                            + MenuCaja(caja)
                            + MenuFacturacion(facturacion)
                            + MenuClientes(clientes)
                            + MenuServicioTecnico(servicioTecnico)
                            + MenuStock(stock)
                            + MenuAdministracion(administracion)                           
                  + "</ul>";
    }



    /**
     * Funcioes para armar el menu
     * @param b true arma, false no arma
     * @returm menu armado
     **/
    private String MenuFacturacion(Boolean b)
    {
        if (b)
        {
            return "<li><a href=\"#\">Facturación</a></li>";
        }
        return "";
    }


    private String MenuClientes(Boolean b)
    {
        if (b)
        {
            return "<li><a href=\"#\">Clientes</a>"
                    + "<ul>"
                        + MenuClientesDetalles()
                    + "</ul>"
                 + "</li>";
        }
        return "";
    }

    private String MenuServicioTecnico(Boolean b)
    {
        if (b)
        {
            return "<li><a href=\"#\">Servicio Técnico</a></li>";
        }
        return "";
    }


    private String MenuStock(Boolean b)
    {
        if (b)
        {
            return "<li><a href=\"#\">Stock</a>"
                    + "<ul>"
                        + MenuStockDetalles()
                    + "</ul>"
                 + "</li>";
        }
        return "";
    }

    private String MenuAdministracion(Boolean b)
    {
        if (b)
        {
            return "<li><a href=\"#\">Administración</a>"
                    + "<ul>"
                        + MenuAdministracionDetalles()
                    + "</ul>"
                 + "</li>";
        }
        return "";
    }

    private String MenuCaja(Boolean b)
    {
        if (b)
        {
            return "<li><a href=\"#\">Caja</a></li>";
        }
        return "";
    }

    public String MenuClientesDetalles() 
    {
        return "<li><a href=\"../cliente/registro_clientes.aspx\">Registro de Clientes</a></li>  ";     
    }

    public String MenuStockDetalles()
    { 
        return "<li><a href=\"../stock/registro_producto.aspx \">Productos</a></li>"                       
             + "<li><a href=\"../stock/registro_marca.aspx \">Marcas</a></li>"                       
             + "<li><a href=\"../stock/registro_tipo_producto.aspx \">Tipos de Productos</a></li>"
             + "<li><a href=\"../stock/registro_iva.aspx \">IVA</a></li>"
             + "<li><a href=\"../stock/registro_deposito.aspx \">Depósitos</a></li>"
             + "<li><a href=\"../stock/reporte_marca.aspx \">Listar Marcas</a></li>";
    }

    public String MenuAdministracionDetalles() {
        return "<li><a href=\"../administracion/registro_usuario.aspx \">Registro de Usuarios</a></li>"
             + "<li><a href=\"../administracion/permisos_usuario.aspx \">Permisos de Usuario</a></li>"                        
             + "<li><a href=\"../administracion/registro_empleado.aspx \">Registro de Empleados</a></li>"
             + "<li><a href=\"../administracion/empresa.aspx \">Empresa</a></li>";
    }
    public String MenuCajaDetalles() {
        return "";
    }
}
